<?php

namespace App\Console\Gather;


use App\Service\BaiduNlp;

class Xueqiu extends Base
{
    /**
     * 采集舆情文章
     *
     * 参数与选项的区别
     *      在执行命令时，参数必须严格按定义时的顺序输入，不需输入参数名，只需输入参数的值即可。
     *      输入选项则必须带选项名，且选项名前须加 -- 前缀（选项简写字母前加 -），选项可按任意顺序输入
     */

    // sudo -u www php /www/wwwroot/option/artisan command:gather-xueqiu
    //  php artisan command:gather-xueqiu
    // 请求 以及参数
    // protected $signature = 'command:name {param1} {param2}';  // 必填参数
    // protected $signature = 'command:name {参数名?} {参数名=默认值} {参数名? : 参数说明}';  // 可选参数
    // protected $signature = 'command:name {--选项名} {--选项名=} {--选项名=默认值} {--简写字母|选项名} {--选项名 : 选项说明}';  // 选项

    protected $signature   = 'command:gather-xueqiu {times=0} {number=0}';
    protected $description = '采集雪球APP讨论';

    // 执行
    public function handle()
    {
        // 执行次数
        $times  = $this->argument('times') + 1;
        $number = $this->argument('number');
        $number = $number ?: 2000;
        $start  = ($times - 1) * $number;
        $end    = $times * $number;

        //$stocks  = $this->allStock($start, $end);
        $is_file = false;
        $stocks  = $this->allKeyword();
        $cline   = chr(10);


        // 需要采集的
        foreach($stocks as $key => $it){
            $keyword = $it['name'];
            $page    = 1;
            $size    = 10;
            if($keyword == '宋正'){
                $keyword = '董事长宋正';
            }

            // 命令窗口名称
            $this->cmdTitle($this->description."：".$it['id']."：".$keyword);

            // 输出
            $this->line($cline.$cline.$cline.$cline);
            $this->question('采集股票信息：'.$keyword);
            $this->line($cline.$cline.$cline.$cline);


            // 执行采集
            for($page = 1; $page <= 10; $page++){
                $this->getAndSave($keyword, $it['id'], $page, $size, $is_file);
                if($this->errorno == 500){
                    break;
                }
            }
        }

        $this->showMsg('采集完成！');
    }

    // 采集并保存到数据库
    public function getAndSave($keyword, $keywordId, $page, $size, $is_file = false)
    {
        // 采集
        $collect = new \App\Service\Collect\Xueqiu();
        $list    = $collect->getApiList($keyword, $page, $size);
        $collect->setKeyword($keyword);
        $collect->setKeywordId($keywordId);
        if(empty($list)){
            $message = $collect->getError() ?: '没有采集数据！';

            $this->showMsg($message, $collect->getCode());

            return true;
        }

        // 展示
        //$this->show($list[0]);

        // 采集详情内容
        //   TODO 这里采集的是百度的内容
        foreach($list as $key => $item){
            // 提示
            $this->showMsg(' '.($key + 1).'：==> 采集文章：'.$item['title']);

            $res = $collect->saveApiDataToDb($item, $key, $is_file);
            if($res === false){
                $this->showError($collect->getError(), $collect->getCode());
            }
        }

        return true;
    }


}
